package principal;
import java.beans.ConstructorProperties;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import bean.Annonce;
import bean.Site;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

import extraire.ExtraireOuestImmo;
import fwCedam.general.Fichiers;
import fwCedam.utilitaire.Log;
import fwCedam.utilitaire.UtilitaireFichier;


public class Extracteur implements ConstantesAdresseSite{

	
	/**
	 * @param args
	 */
	static int niveau = 0;
	public static void main(String[] args) {
		
		try {
			File fichier = new File(System.getProperty("user.dir" ));
			//String text = analyseDossier2(fichier);
			//System.out.println(text);
		} catch (Exception e) {
			e.printStackTrace();
		}
		lancerExtractionOuesImmo("","");
		
	}
	
	public static String analyseDossier2(File path) throws Exception { 
		String text = "";
		try {
		    if( path.exists() ) { 
	            File[] files = path.listFiles(); 
	            for(int i=0; i<files.length; i++) { 
	            	if(files[i].isDirectory()) { 
	            		System.out.println("repertoire: "+files[i].getPath());
	            		//text += afficherLigne(files[i].getPath())+" (REPERTOIRE)"+"\n";
	            		text += afficherLigne(files[i].getName(), niveau)+" (REPERTOIRE)"+"\n";
	            		niveau++;
	            		text +=analyseDossier2(files[i]); 
	            		
	                } 
	                else { 
	                	System.out.println("	fichier: "+files[i].getPath());
	                	//text += afficherLigne(files[i].getPath())+"\n";
	                	text += afficherLigne(files[i].getName(), niveau)+"\n";
                    } 
	            } 
	        } 
		} catch (Exception e) {
			throw e;
		}
		niveau--;
	    return text; 
	}
	
	public static String afficherLigne(String path) {
		String res = "";
		String nomFichier = "";
		if(path!=null) {
			path = path.replace("\\", "/");
			nomFichier = path.split("/")[path.split("/").length-1];
			if(path.split("/")!= null) {
				for (int i = 0; i < path.split("/").length; i++) {
					res += "	";
				}
			}
		}
		return res+nomFichier;
	}
	
	public static String afficherLigne(String nom, int niveau) {
		String res = "";
		for (int i = 0; i < niveau; i++) {
			res += "    ";
		}
		return res+nom;
	}
	
	public static void lancerExtractionOuesImmo(String path ,String nomFichier) {
		ExtraireOuestImmo extraireOuestImmo = new ExtraireOuestImmo();
		List<Site> listeSites = new ArrayList<Site>();
		try {
			
			Log.initialier(true);
			Log.information("DEBUT");
			
			extraireOuestImmo.extraireSite(ADD_OUEST_IMMO);
			 
		} catch (FailingHttpStatusCodeException e) {
			Log.erreur("FailingHttpStatusCodeException",e);
		} catch (Exception e) {
			Log.erreur("Exception",e);
		}
		
		try {
			Site siteOuestImmo = extraireOuestImmo.getSiteOuestImmo();
			listeSites.add(siteOuestImmo);
			String pathFichier = UtilitaireExtraction.ecrireFichierCSV(path, nomFichier, listeSites);
			
			MiseFormeExcel.CommencerMiseEnForme(pathFichier);
		} catch (Exception e) {
			Log.erreur("Exception2",e);
		}
		Log.information("FIN");
	}
	
	public static void test() {

		try {
			File source = new File("http://cedam.s215.eatj.com/");
			analyseDossier(source);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

		try {
			File source2 = new File(System.getProperty("user.dir"));
			analyseDossier(source2);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static boolean analyseDossier(File path) throws Exception { 
		try {
		    if( path.exists() ) { 
	            File[] files = path.listFiles(); 
	            for(int i=0; i<files.length; i++) { 
	            	if(files[i].isDirectory()) { 
	            		System.out.println("repertoire: "+files[i].getPath());
	            		analyseDossier(files[i]); 
	                } 
	                else { 
	                	System.out.println("	fichier: "+files[i].getPath());
                    } 
	            } 
	        } 
		} catch (Exception e) {
			throw e;
		}
	    return true; 
	}
	
	
	public static boolean ecrirerFichier(File fichier, String donnee) throws Exception{
		//methode brute on efface le fichier puis on le recree
		FileWriter writer = null;
		try{
			try {
				//File MyFile = new File(fichier.getAbsolutePath());
				//MyFile.delete(); 
			} catch (Exception e) {
				throw e;
			}	
			
		     writer = new FileWriter(fichier.getAbsolutePath(), true);
		     writer.write(donnee,0,donnee.length());
		}catch(IOException e){
			throw e;
		}finally{
		  if(writer != null){
		     try {
				writer.close();
			} catch (IOException e) {
				throw e;				
			}
		  }
		}
		//System.out.println("ecriture du fichier : " + fichier.getAbsolutePath() );
		return true;
	}
	
}
